#ifndef __SEQUENCE_LIST_H
#define __SEQUENCE_LIST_H
#include <iostream>
#include <string>
#include <cstring>
#include "data_type.hpp"
#include "error_type.hpp"

using namespace std;
#define SEQUENCE_LIST_SIZE 100


typedef struct list
{
    int count;
    DATA_TYPE data[SEQUENCE_LIST_SIZE]; 
}sequence_list;

enum
{
    HEAD_INSERT = -2,
    TRAIL_INSERT = -1,
    POSITION_INSERT = 0,
}ADD_MODE;
class SEQUENCE_LIST
{
    public:
        /*创建顺序表*/  
        sequence_list * create_sequence_list(void);
        /**
         * @brief  插入数据
         * @note   
         * @param  sequence_list_variable: 
         * @param  add_mode: HEAD_INSERT:头插;TRAIL_INSERT:尾插;POSITION_INSERT:插入的位置。
         * @param  data: 
         * @retval 
         */
        int add_sequence_list_data(sequence_list * sequence_list_variable ,int add_mode, DATA_TYPE data);
        //int add_sequence_list_data(sequence_list * sequence_list_variable ,int add_mode, DATA_TYPE data, int num);
        /**
         * @brief  删除数据
         * @note   
         * @param  sequence_list_variable: 
         * @param  add_mode: 头删 ；尾删 ；删除指定位置
         * @param  data: 
         * @retval 
         */
        int delete_sequence_list (sequence_list * sequence_list_variable ,int add_mode);
        /**
         * @brief  修改数据
         * @note   
         * @param  sequence_list_variable: 
         * @param  add_mode: 
         * @param  data: 
         * @retval 
         */
        int amend_sequence_list(sequence_list * sequence_list_variable , int add_mode, DATA_TYPE data);
        /**
         * @brief  查看顺序表
         * @note   
         * @param  sequence_list_variable: 
         * @retval 
         */
        int show_sequence_list(sequence_list * sequence_list_variable);

    private:
        
};

#endif /*__SEQUENCE_H*/